<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
	function Person(name, sex){
		this.name = name;
		this.sex = sex;
	}

	Person.prototype.showName = function (){
		alert(this.name);
	}

	Person.prototype.showSex = function (){
		alert(this.sex);
	}

	//var p1 = new Person('blue', '男');
	//p1.showName();

	function Worker(name, sex, job){
		//构造函数伪装		调用父级的构造函数。call方法改变this的指向，而括号内的this指向new出来的Worker对象
		Person.call(this, name, sex);

		this.job = job;
	}
	//原型链		通过原型来继承父级的方法
	//Worker.prototype = Person.prototype;		//引用原型的方法（问题多多）
	//但是因为是引用原型的方法（是 引用 不是 复制），在对Worker的原型添加或删除方法的同时，必然也会改变父级Person的原型的方法，这必然是很大的问题,改写为（用复制而不用引用）：

	for (var i in Person.prototype){
		Worker.prototype[i] = Person.prototype[i];		//不能用Worker.prototype += Person.prototype[i];
	}

	Worker.prototype.showJob = function (){
		alert(this.job);
	}
	</script>
</head>
<body>
	
</body>
</html>